package com.itheima.utils;

import com.itheima.mongo.Sequence;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.FindAndModifyOptions;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
//与朋友圈相关的 配置工具类
//实现Sequence主键自增表 自增功能
@Component
public class IdWorker {

    //数据库
    @Autowired
    private MongoTemplate mongoTemplate;

    public Long getNextId(String collName) {
        //查询数据库表中包含 collName列名
        Query query = new Query(Criteria.where("collName").is(collName));

        //创建自动更新对象
        Update update = new Update();
        //通过apbte对象添加方法 每次会对表中seqid + 1 （数值）
        update.inc("seqId", 1);


        FindAndModifyOptions options = new FindAndModifyOptions();
        //通过options  如果数据中不存在就保存一条数据
        options.upsert(true);
        //每次返回最新的数据内容
        options.returnNew(true);

        //调用数据库方法 先进行修改在将修改的最新数据进行返回
        Sequence sequence = mongoTemplate.findAndModify(query, update, options, Sequence.class);
        return sequence.getSeqId();
    }
}